package models;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.codehaus.jackson.annotate.JsonIgnore;

import enums.CategoriaIndicador;

@Entity
@Table(name = "indicador_estudiante_periodo")
@IdClass(IndicadorEstudiantePeriodoId.class)
public class IndicadorEstudiantePeriodo extends
		models.Entity<IndicadorEstudiantePeriodoId> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "id_estudiante")
	private Long idEstudiante;

	@Id
	@Column(name = "id_materia")
	private Long idMateria;
	@Id
	@Column(name = "id_grado")
	private Long idGrado;
	@Id
	@Column(name = "id_periodo")
	private Long idPeriodo;
	@Id
	@Column(name = "categoria_indicador")
	@Enumerated(EnumType.STRING)
	private CategoriaIndicador categoriaIndicador;
	@Id
	@Column(name = "consecutivo_indicador")
	private Integer consecutivoIndicador;

	@Transient
	private Indicador indicador;

	public IndicadorEstudiantePeriodo() {

	}

	public IndicadorEstudiantePeriodo(Long idEstudiante, Long idMateria,
			Long idGrado, Long idPeriodo,
			CategoriaIndicador categoriaIndicador,
			Integer consecutivoIndicador) {
		super();
		this.idEstudiante = idEstudiante;
		this.idMateria = idMateria;
		this.idGrado = idGrado;
		this.idPeriodo = idPeriodo;
		this.categoriaIndicador = categoriaIndicador;
		this.consecutivoIndicador = consecutivoIndicador;
	}

	@JsonIgnore
	@Override
	public IndicadorEstudiantePeriodoId getId() {
		return new IndicadorEstudiantePeriodoId(idEstudiante, idMateria,
				idGrado, idPeriodo, categoriaIndicador, consecutivoIndicador);
	}

	@Override
	public void setId(IndicadorEstudiantePeriodoId id) {
		idEstudiante = id.getIdEstudiante();
		idMateria = id.getIdMateria();
		idGrado = id.getIdGrado();
		idPeriodo = id.getIdPeriodo();
		categoriaIndicador = id.getCategoria();
		consecutivoIndicador = id.getConsecutivo();
	}

	public Long getIdEstudiante() {
		return idEstudiante;
	}

	public void setIdEstudiante(Long idEstudiante) {
		this.idEstudiante = idEstudiante;
	}

	public Long getIdMateria() {
		return idMateria;
	}

	public void setIdMateria(Long idMateria) {
		this.idMateria = idMateria;
	}

	public Long getIdGrado() {
		return idGrado;
	}

	public void setIdGrado(Long idGrado) {
		this.idGrado = idGrado;
	}

	public Long getIdPeriodo() {
		return idPeriodo;
	}

	public void setIdPeriodo(Long idPeriodo) {
		this.idPeriodo = idPeriodo;
	}

	public CategoriaIndicador getCategoriaIndicador() {
		return categoriaIndicador;
	}

	public void setCategoriaIndicador(CategoriaIndicador categoriaIndicador) {
		this.categoriaIndicador = categoriaIndicador;
	}

	public Integer getConsecutivoIndicador() {
		return consecutivoIndicador;
	}

	public void setConsecutivoIndicador(Integer consecutivoIndicador) {
		this.consecutivoIndicador = consecutivoIndicador;
	}

	public void setIndicador(Indicador indicador) {
		this.indicador = indicador;
	}

	public Indicador getIndicador() {
		return indicador;
	}

}
